#ifndef __ARRAY_QUEUE_H__
#define __ARRAY_QUEUE_H__

typedef struct aqueue_t {
    void *base;
    int capacity;
    int head;
    int tail;
    int size;
} aqueue_t;

int aqueue_init(aqueue_t **s, int capacity, int size);

int aqueue_empty(aqueue_t *s);

int aqueue_full(aqueue_t *s);

int aqueue_push(aqueue_t *s, const void *data);

int aqueue_pop(aqueue_t *s, void *elem);

void aqueue_destroy(aqueue_t **s);

#endif
